In data processing systems, a coprocessor is generally a special purpose processing unit that assists a processor in performing certain types of operations, particularly computationally demanding operations. For example, a data processing system may include a processor coupled to a math (numeric) coprocessor, wherein the math coprocessor performs certain mathematical computations, particularly floating-point operations. In addition to math coprocessors, graphics coprocessors for manipulating graphic images are also common.
In known data processing systems including processors coupled to coprocessors, the processor executes instructions from one instruction set (i.e., processor instructions of a processor instruction set), and the coprocessor executes instructions from another instruction set (i.e., coprocessor instructions of a coprocessor instruction set). Due to the special purpose nature of coprocessors, the processor and coprocessor instruction sets typically differ substantially, and are defined by manufacturers of the processor and coprocessor, respectively.
To take advantage of the coprocessor, software programs must be written to include coprocessor instructions of the coprocessor instruction set. When the processor is executing instructions of a software program and encounters a coprocessor instruction, the processor issues the coprocessor instruction to the coprocessor. The coprocessor executes the coprocessor instruction, and typically returns a result to the processor.
In order for coprocessor manufacturers to sell many units, commercially available coprocessors typically perform operations needed by a large group of data processing system users. However, it is believed that data processing system users also want coprocessors that perform one or more operations that commercially available coprocessors do not perform, or coprocessors that perform specific operations in particular ways.
For example, in a video telephone (videophone) application, it may be advantageous to have a coprocessor that performs certain MPEG-4 coder/decoder (codec) functions in particular ways. MPEG-4 is an International Standards Organisation/International Electro technical Commission (ISO/IEC) video and audio data compression standard developed by the Moving Picture Experts Group (MPEG). The MPEG-4 standard provides a set of tools and technologies enabling the integration of the production, distribution, and content access paradigms in such applications as digital TV, interactive graphics, and interactive multimedia. With its robustness, high quality and low bit rate, MPEG-4 video compression has already found its way into wireless telephones, personal digital assistants (PDAs), digital cameras, Internet Web pages, etc.
The wide range of tools offered by the MPEG-4 standard allows the decoding and representation of natural video, still images, and synthetic graphics objects. For a specific area of application, the standard depends on profiles and levels to narrow down syntax and semantics subsets, respectively. The 9 visual profiles defined in version 1.0 of the MPEG-4 standard are: simple, simple scalable, core, main, n-bit, simple facial animation, scalable texture, basic animated 2D texture, and hybrid. In version 2.0, another 6 profiles were added: advanced real-time simple, core scalable, advanced coding efficiency, advanced scalable texture, advanced core, simple face and body animation. Of these 16 profiles, half of them are for natural video and the other half are for synthetic/natural hybrid visual content.
The simple profile, which is backward compatible to the existing video conferencing standard H.263, has been dubbed by many as the video standard for wireless videophone applications. The simple profile supports the basic tools for intra and predictive pictures, error resilience, and short header. The simple profile only operates on rectangular blocks, and does not include arbitrary shape coding. The 4 levels within the simple profile vary between picture size, frame rate, buffer size, bit rate, and video packet length.